c9dfb637af44a9e8a352e12edeefc429174c2cc0,backend-service/app/models/daos/DatasetInfoDao.java,DatasetInfoDao,updateDatasetSchema,#JsonNode#,1106
Before Change
final JsonNode urnNode = root.path("urn");
final JsonNode schemas = root.path("schemas");
if ((idNode.isMissingNode() && urnNode.isMissingNode()) || schemas.isMissingNode()) {
throw new IllegalArgumentException(
"Dataset schemas update fail, " + "Json missing necessary fields: " + root.toString());
}
Integer datasetId = 0;
String urn = null;
try {
final Object[] idUrn = findIdAndUrn(idNode, urnNode);
datasetId = (Integer) idUrn[0];
urn = (String) idUrn[1];
} catch (Exception ex) {
urn = urnNode.asText();
}
ObjectMapper om = new ObjectMapper();
DatasetSchemaInfoRecord rec = om.convertValue(schemas, DatasetSchemaInfoRecord.class);
rec.setDatasetId(datasetId);
rec.setDatasetUrn(urn);
rec.setModifiedTime(System.currentTimeMillis() / 1000);
// insert dataset and get ID if necessary
if (datasetId == 0) {
DatasetRecord record = new DatasetRecord();
record.setUrn(urn);
record.setSourceCreatedTime("" + rec.getCreateTime() / 1000);
record.setSchema(rec.getOriginalSchema());
record.setSchemaType(rec.getFormat());
record.setFields((String) StringUtil.objectToJsonString(rec.getFieldSchema()));
record.setSource("API");
Urn urnType = new Urn(urn);
record.setDatasetType(urnType.datasetType);
String[] urnPaths = urnType.abstractObjectName.split("/");
record.setName(urnPaths[urnPaths.length - 1]);
DICT_DATASET_WRITER.append(record);
DICT_DATASET_WRITER.close();
datasetId = Integer.valueOf(DatasetDao.getDatasetByUrn(urn).get("id").toString());
rec.setDatasetId(datasetId);
}
// if dataset already exist in dict_dataset, update info
else {
DICT_DATASET_WRITER.execute(UPDATE_DICT_DATASET_WITH_SCHEMA_CHANGE,
new Object[]{rec.getOriginalSchema(), rec.getFormat(), StringUtil.objectToJsonString(rec.getFieldSchema()),
"API", System.currentTimeMillis() / 1000, datasetId});
}
After Change
record.setUrn(urn);
record.setSourceCreatedTime("" + rec.getCreateTime() / 1000);
record.setSchema(rec.getOriginalSchema().getText());
record.setSchemaType(rec.getOriginalSchema().getFormat());
record.setFields((String) StringUtil.objectToJsonString(rec.getFieldSchema()));
record.setSource("API");
Urn urnType = new Urn(urn);
record.setDatasetType(urnType.datasetType);
String[] urnPaths = urnType.abstractObjectName.split("/");
record.setName(urnPaths[urnPaths.length - 1]);
DICT_DATASET_WRITER.append(record);
DICT_DATASET_WRITER.close();
datasetId = Integer.valueOf(DatasetDao.getDatasetByUrn(urn).get("id").toString());
rec.setDatasetId(datasetId);
}
// if dataset already exist in dict_dataset, update info
else {
DICT_DATASET_WRITER.execute(UPDATE_DICT_DATASET_WITH_SCHEMA_CHANGE,
new Object[]{rec.getOriginalSchema().getText(), rec.getOriginalSchema().getFormat(),
StringUtil.objectToJsonString(rec.getFieldSchema()), "API", System.currentTimeMillis() / 1000, datasetId});
}